package com.bmf.admin.module.scenario.entity;


import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;

import com.bmf.admin.constant.CampEnum;
import com.bmf.admin.constant.ForcesTypeEnum;
import com.bmf.admin.utils.ITree;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.List;


/**
 * 想定兵力(ScenarioForces)表实体类
 *
 * @author aries
 * @since 2024-07-06 10:04:23
 */
@Data
@NoArgsConstructor
@TableName("scenario_forces")
@Schema(description = "想定兵力")
public class ScenarioForces extends BaseAuditable implements Serializable, ITree<ScenarioForces, String> {

    @Schema(description = "上级兵力id")
    private String parentId;

    @Schema(description = "想定id")
    private String scenarioId;

    @Schema(description = "阵营")
    private CampEnum camp;

    @Schema(description = "兵力类型")
    private ForcesTypeEnum forcesType;

    @Schema(description = "兵力名")
    private String forcesName;

    @Schema(description = "经度")
    private Double longitude;

    @Schema(description = "纬度")
    private Double latitude;

    @Schema(description = "海拔")
    private Float height;

    @Schema(description = "航向")
    private Double course;

    //=============================路线对应的字段================================
    @Schema(description = "路线类型id")
    private String routeTypeId;

    @Schema(description = "起点名")
    private String originName;

    @Schema(description = "终点名")
    private String destinationName;

    @Schema(description = "终点经度")
    private Double destinationLongitude;

    @Schema(description = "终点纬度")
    private Double destinationLatitude;

    @Schema(description = "线路长度")
    private Float routeLength;

    /**
     * 以下字段数据库不存在
     * 子兵力
     */
    @Schema(description = "下级兵力")
    @TableField(exist = false)
    private List<ScenarioForces> children;

    @TableField(exist = false)
    @Schema(description = "想定区域边界")
    private List<ScenarioAreaBound> areaBoundList;

    @TableField(exist = false)
    @Schema(description = "想定兵力参数")
    private List<ScenarioParam> paramList;

    @TableField(exist = false)
    @Schema(description = "任务弧段列表")
    private List<ScenarioArc> arcList;

    @Schema(description = "特情列表")
    @TableField(exist = false)
    private List<ScenarioIncident> incidentList;

}

